﻿using Microsoft.WindowsAPICodePack.Taskbar;
using Serietheque.Fenetres;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Threading;

namespace Serietheque
{
    /// <summary>
    /// Créer une classe pour traité directement le nom de l'épisode.
    /// </summary>
    public class EpisodesTempo
    {
        private int m_saison;
        private int m_episode;
        private string m_serie;
        private bool m_ok;
        private string m_chemin;

        public string Chemin
        {
            get { return m_chemin; }
            set { m_chemin = value; }
        }
    
        public int Saison
        {
            get { return m_saison; }
            set { m_saison = value; }
        }
        public int Episode
        {
            get { return m_episode; }
            set { m_episode = value; }
        }
        public string Serie
        {
            get { return m_serie; }
            set { m_serie = value; }
        }
        public bool Ok
        {
            get { return m_ok; }
            set { m_ok = value; }
        }

        /// <summary>
        /// Constructeur de base
        /// </summary>
        public EpisodesTempo()
        {
            this.m_ok = false;
        }

        /// <summary>
        /// A partir des données des bases
        /// </summary>
        /// <param name="_saison">num saison</param>
        /// <param name="_episode">num épisode</param>
        /// <param name="_serie">nom de la série</param>
        public EpisodesTempo(int _saison, int _episode, string _serie, string chemin =null)
        {
            this.m_saison = _saison;
            this.m_episode = _episode;
            this.m_serie = _serie;
            this.m_ok = true;
            this.m_chemin = chemin;
        }

        /// <summary>
        /// A partir du nom du fichier de l'épisode à traiter
        /// </summary>
        /// <param name="_nomFichierSansExtention">nom du fichier de l'épisode</param>
        public EpisodesTempo(string _nomFichierSansExtention, string chemin = null)
        {

            this.m_chemin = chemin;
            Couper(_nomFichierSansExtention);
        }

        //coupe le nom du fichier.
        private void Couper(string nomFichier)
        {
            string[] nomCouper = null;
            try
            {
                nomCouper = Regex.Split(nomFichier, @"([Ss]{0,1}[0-9]{1,2}[.eExX][0-9]+)");

                //string nomSerie = Re
            }
            catch (Exception e)
            {
                e.ToString();
            }
           

            if (nomCouper != null && nomCouper.Length > 1)
            {
                string[] nbrs = Regex.Split(nomCouper[1], @"([0-9]+)");

                if (Regex.IsMatch(nbrs[1], @"([0-9]+)"))
                {
                    //Name de la actualSerie
                    m_serie = Regex.Replace(nomCouper[0], @"[-.]", " ").Trim();
                    //Num saison
                    m_saison = Int32.Parse(nbrs[1], CultureInfo.InvariantCulture);
                    //Num Episode
                    m_episode = Int32.Parse(nbrs[3], CultureInfo.InvariantCulture);
                    //Retour du name, saison, episode
                    m_ok = true;
                }
                else
                    m_ok = false;
            }
            else
                m_ok = false;
        }
    }
}
